import { myhttp } from '@/utils/request'
import { FilterValue, QueryConfig } from '@/common/dayu-common'

interface Department{
  id : number;
  /** 部门名称*/
  name? : string;
  /** 上级部门ID*/
  parentId? : number;
  /** 部门类型*/
  administrativeCategory? : string;
  /** 所在地址*/
  addr? : string;
  /** 备注*/
  remarks? : string;
  /** 顺序号*/
  ordnum? : number;
  /** 锁定状态*/
  rowLock? : number;
}

interface DepartmentStats{
  key?:string;
  aggregateGroupName?:string;
  aggregateGroupLabel?:string;

}

/**对DepartmentStats的二次封装，去掉了分组字段，只保留数值，并增加了部分行转列属性*/
class DepartmentStatData{
}

class DepartmentService{
  controller = 'department';
  
  /**获取一个Department对象*/
  getDepartment(id : number){
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/getDepartment`,{id: id});
  }
  
  /**获取一个EntityBO<Department>对象*/
  getDepartmentBO(id : number){
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/getDepartmentBO`,{id: id});
  }

  /**保存一个对象*/
  saveDepartment(item : Department) {
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/saveDepartment`,{item: JSON.stringify(item)});
  }


    /**更改 自己所属的父节点
     *
     * @param id T_DEMO_DEPARTMENT.id
     * @param parentIdNew 新的 上级部门ID
     */
  changeParent(id:number, parentIdNew:number){
      return myhttp.post(`${myhttp.urlprix}base/${this.controller}/changeParent`,{id:id, parentIdNew:parentIdNew});
  }

  /**修改数据锁定状态
   * @param id 记录id，另-1表示对整表进行锁定
   * @param lockState
   * @param authTag 权限类型，参考 AuthTag
  **/
  changeLockState(id:number, lockState:number){
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/changeLockState`,{id: id, lockState:lockState});
  }

  /**删除一条记录*/
  deleteDepartment(id : number){
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/deleteDepartment`,{id : id});
  }

  /**根据条件查询*/
  getDepartmentExListAndStats(filters:Array<FilterValue>, queryConfig:QueryConfig) {
    return myhttp.post(`${myhttp.urlprix}base/${this.controller}/getDepartmentExListAndStats`,{filters: JSON.stringify(filters), queryConfig: JSON.stringify(queryConfig)});
  }

  /**导出并下载excel文件*/
  exportDepartmentExListAndStats(filters:Array<FilterValue>, queryConfig:QueryConfig) {
    return myhttp.post(`${myhttp.urlprix}xls/${this.controller}/getDepartmentExListAndStats`,{filters: JSON.stringify(filters), queryConfig: JSON.stringify(queryConfig)});
  }
}

const departmentService = new DepartmentService();

export {Department, DepartmentStats, DepartmentStatData, departmentService}